﻿Imports Logica

''' <summary>
''' User Control buscar departamentos.
''' </summary>
''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
Public Class BuscarDepartamento

    Private ucModificar As ModificarDepartamento

    ''' <summary>
    ''' Se ejecuta cuando el user control se carga.
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub BuscarDepartamento_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        txtCodigo.Text = ""
        txtNombre.Text = ""
        lblError.Text = ""
        dgvDepartamentos.Rows.Clear()
        txtCodigo.Focus()

        'Permiso modificar
        If Not Gestor.usuarioTienePermiso(Gestor.usuarioActual()("identificacion"), 28) Then
            btnModificar.Enabled = False
        End If

        'Permiso eliminar
        If Not Gestor.usuarioTienePermiso(Gestor.usuarioActual()("identificacion"), 29) Then
            btnEliminar.Enabled = False
        End If

    End Sub

    ''' <summary>
    ''' Se ejecuta cuando se da click en el boton buscar.
    ''' Busca todos los departamentos con los criterios de busqueda
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub btnBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscar.Click

        dgvDepartamentos.Rows.Clear()
        cargarDgvDepartamentos()

    End Sub
    ''' <summary>
    ''' Carga en el data grid view los datos provenientes de la base de datos
    ''' </summary>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub cargarDgvDepartamentos()
        Dim listaDepartamentos As List(Of Hashtable)

        Try

            listaDepartamentos = Gestor.departamentoBuscar(txtCodigo.Text, txtNombre.Text)

            If listaDepartamentos.Count = 0 Then
                lblError.ForeColor = Color.Red
                lblError.Text = "No hubo resultados en la búsqueda."
            Else

                For Each d As Hashtable In listaDepartamentos

                    If d("director").Equals("No tiene") Then

                        dgvDepartamentos.Rows.Add(d("codigo"), d("nombre"), d("descripcion"), d("director"))

                    Else

                        Dim nombreCompleto As String
                        Dim datosU As Hashtable

                        datosU = Gestor.usuarioBuscar(d("director"))

                        nombreCompleto = datosU("nombre") & " " & datosU("primerApellido") & " " & datosU("segundoApellido")
                        dgvDepartamentos.Rows.Add(d("codigo"), d("nombre"), d("descripcion"), nombreCompleto)

                    End If
                Next

                lblError.ForeColor = Color.Green
                lblError.Text = "Resultados encontrados"

            End If

        Catch es As SqlClient.SqlException When es.Number.Equals(4060)

            MessageBox.Show("Error de conexión con la base de datos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub

    ''' <summary>
    ''' Se ejecuta cuando cambia el texto del textBox txtCodigo
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub txtCodigo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtCodigo.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Se ejecuta cuando cambia el texto del textBox txtNombre
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub txtNombre_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtNombre.TextChanged
        lblError.Text = ""
    End Sub

    ''' <summary>
    ''' Se ejecuta al dar click en el boton de modificar. Modifica los datos del
    ''' departamento.
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click
        Dim dep As Departamentos
        Dim ubicacion As New Point(152, 0)
        Dim codigo As String

        Try

            codigo = dgvDepartamentos.SelectedRows(0).Cells(0).Value
            ucModificar = New ModificarDepartamento(codigo)
            ucModificar.Location = ubicacion

            dep = Me.Parent
            dep.Controls.Add(ucModificar)
            dep.mostrarControl(ucModificar)
            dep.tvDepartamentos.SelectedNode = Nothing
            lblError.Text = ""

        Catch es As SqlClient.SqlException When es.Number.Equals(4060)

            MessageBox.Show("Error de conexión con la base de datos.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Catch ex As Exception
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub

    ''' <summary>
    ''' Elimina un departamento
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub btnEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminar.Click

        Dim codigo As String

        Try

            codigo = dgvDepartamentos.SelectedRows(0).Cells(0).Value

            If MessageBox.Show("Desea eliminar el departamento?. Si elimina el departamento los niveles y los puestos asociados a este serán eliminados de igual manera. Desea continuar?", "Información", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) = DialogResult.Yes Then

                Try
                    If Not Gestor.departamentoEliminar(codigo) Then

                        dgvDepartamentos.Rows.Clear()
                        MessageBox.Show("Departamento eliminado exitosamente.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        lblError.Text = ""

                    Else
                        MessageBox.Show("El departamento no se puede eliminar ya que contiene puestos en uso, favor diríjase a asignar puesto a empleado para dejar los puestos sin empleados.", "Información", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
                    End If


                Catch ex As Exception
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End Try

            End If

        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = "Seleccione una fila."
        End Try

    End Sub

    ''' <summary>
    ''' Llama a la pantalla consultar niveles
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub btnConsultarNiv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConsultarNiv.Click

        Dim codigoDep As Integer
        Dim ucConsultarNiveles As ConsultarNiveles

        Try
            codigoDep = dgvDepartamentos.SelectedRows(0).Cells(0).Value
            ucConsultarNiveles = New ConsultarNiveles(codigoDep)

            ucConsultarNiveles.ShowDialog()


        Catch ex As Exception
            lblError.ForeColor = Color.Red
            lblError.Text = "Seleccione una fila."
        End Try


    End Sub

    ''' <summary>
    ''' Si la pantalla no esta activa resetea los campos
    ''' </summary>
    ''' <param name="sender">El objeto que lo envía</param>
    ''' <param name="e">Argumentos del evento</param>
    ''' <remarks>Creado por: David Murillo, Creado: 12/06/2010, Modificado: 31/06/2010</remarks>
    Private Sub BuscarDepartamento_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Leave
        lblError.Text = ""
        dgvDepartamentos.Rows.Clear()

    End Sub
End Class
